package com.hmall.trade.config;

import com.hmall.common.utils.UserContext;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Feign调用拦截器配置类
 *
 * @Author mr.wu
 * @Date 2025-6-16 22:09
 */
@Configuration
public class FeignInterceptorConfig {

    /**
     * Feign调用拦截器类
     * @return
     */
    @Bean
    public RequestInterceptor userInfoRequestInterceptor(){
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {
                //1. 获取ThreadLocal中的userId
                Long userId = UserContext.getUser();

                //2. 如果非空则设置到请求头，传给被调用的微服务
                if(userId!=null) {
                    requestTemplate.header("user-info",userId.toString());
                }
            }
        };
    }


//    /**
//     * 创建交换机
//     * @return
//     */
//    @Bean
//    public DirectExchange directExchange(){
//        return new DirectExchange("ttl.fanout");
//    }
//
//    /**
//     * 创建ttl队列
//     * @return
//     */
//    @Bean
//    public Queue ttlQueue(){
//        Queue queue = QueueBuilder
//                .durable("ttl.queue")
//                .ttl(10000)//队列过期时间，10秒
//                .deadLetterExchange("hmall.direct") //死信交换机名称
//                .deadLetterRoutingKey("blue")//死信路由KEY
//                .build();
//        return queue;
//    }
//
//    /**
//     * 绑定延时队列
//     * @return
//     */
//    @Bean
//    public Binding bindTtlQueue(){
//        return BindingBuilder.bind(ttlQueue()).to(directExchange()).with("ttl");
//    }
}